package cn.tedu;

import java.sql.*;
import java.util.Scanner;

public class Demo10 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入用户名: ");
        String username = scan.nextLine();
        System.out.println("请输入密码: ");
        String password = scan.nextLine();

        try (Connection conn = DBUtils.getConn();) {
            //利用SQL来查询提高效率 如用java逻辑来对比 则需要对比数据库中全部对象 效率低
            String sql = "select count(*) from user where username=? and password=?";
            //通过PreparedStatement解决SQL注入问题
            //编译SQL语句的时间点从之前的执行时,提前到了创建对象时 此时用户输入的内容还不在SQL语句里面
            //只是将原有的SQL语句的--逻辑部分锁死
            //只要有拼接字符串 就得使用preparedStatement 可以替代Statement
            PreparedStatement ps = conn.prepareStatement(sql);
            //1 2 代表?位置 此时替换时只能以值得形式添加到原有SQL语句中
            //逻辑部分已经编译好 已经锁死,这样用户输入的内容则不会影响原有SQL语句的逻辑
            ps.setString(1,username);
            ps.setString(2,password);
            ResultSet rs = ps.executeQuery();
            //游标往下移动 查询回来的结果只有一个 不需要循环
            rs.next();
            int count = rs.getInt(1);
            if(count!=0){
                System.out.println("恭喜您,登录成功!");
            }else{
                System.out.println("用户名或密码错误!");
            }

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}
